/*
 * UrlEncode.h
 *
 */

#ifndef URLENCODE_H_
#define URLENCODE_H_

#include <string>
#include <vector>
#include <map>

class UrlEncode {
	public:
		UrlEncode();
		virtual ~UrlEncode();

		/**
		 * @brief Divide la URI en recurso y parametros
		 *
		 * el recurso viene dado por los caracteres anteriores al caracter
		 * '?'. Los parametros son los caracteres siguientes al caracter '?',
		 * separados por caracteres '&'. Los parametros vienen en pares
		 * nombre=valor.
		 *
		 * @param uri la linea encodeada en URL.
		 * @param resource el nombre de recurso resultante de la separacion.
		 * @param params los parametros resultantes de la separacion,
		 * 				encodeados en URL.
		 */
		static void splitUri(const std::string& uri, std::string& resource,
				std::string& params);

		/**
		 * @brief Divide los parametros encodeados en URL
		 *
		 * El vector queda compuesto por pares "[nombre]=[valor]".
		 *
		 * @param params los parametros encodeados en URL a dividir.
		 * @param paramsVector vector con los parametros divididos.
		 */
		static void splitParams(const std::string& params,
				std::vector<std::string>& paramsVector);

		/**
		 * @brief Divide los parametros encodeados en URL y los almacena en
		 * 			un mapa.
		 *
		 * El mapa queda compuesto por pares nombre valor, el caracter '=' que
		 * antes los separaba es eliminado
		 */
		static void splitParams(const std::string& params,
				std::map<std::string, std::string>& paramsMap);
};

#endif  /* URLENCODE_H_ */
